home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1999 March
/
EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso
/
earcd
/
devel
/
vbcc-68k-src
/
machines
/
amiga68k
/
libsrc
/
stdio
/
setvbuf.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-01-01
|
665b
|
25 lines
#include <stdlib.h>
#include <stdio.h>
int setvbuf(FILE *f,char *buf,int mode,size_t size)
{
if(mode==_IONBF&&size<2){size=2;buf=0;}
if(size<2||f->flags&(_READ|_WRITE)) return(EOF);
if(mode==_IONBF) {f->flags|=_UNBUF;size=1;} else f->flags&=~_UNBUF;
if(mode==_IOLBF) f->flags|=_LINEBUF; else f->flags&=~_LINEBUF;
if(buf){
size--; /* eins wird fuer unget gebraucht */
f->base=buf+1;
f->flags|=_NOTMYBUF;
}else{
f->flags&=~_NOTMYBUF;
if(!(f->base=(char *)malloc(size+1)+1))
return(EOF);
}
f->bufsize=size;
f->pointer=f->base;
f->count=0;
return(0);
}